// 这个文件是 Anglar 根模块，告诉 Anglar 如何组装应用

// BrowserModule 浏览器解析的模块
import { BrowserModule } from '@angular/platform-browser';
// Angular 核心模块
import { NgModule } from '@angular/core';
// 引入 FormsModule ,实现双向数据绑定
import { FormsModule } from '@angular/forms';

// 引入 HttpClientModule 请求模块
// jsonp 还需要引入 HttpClientJsonpModule
import {HttpClientModule,HttpClientJsonpModule} from '@angular/common/http'

import { AppRoutingModule } from './app-routing.module';
// 根组件 三个 app.component.html、app.component.css、app.component.ts 
import { AppComponent } from './app.component';
// 用命令 ng component componets/news 创建的，自动引入
import { NewsComponent } from './components/news/news.component';
import { HomeComponent } from './components/home/home.component';
import { FormComponent } from './components/form/form.component';
import { SearchComponent } from './components/search/search.component';
import { TodolistComponent } from './components/todolist/todolist.component';

// 引入并且配置服务
import { StorageService} from './services/storage.service';
import { ZujianComponent } from './components/zujian/zujian.component';
import { NewssComponent } from './components/newss/newss.component';
import { HeaderComponent } from './components/header/header.component';
import { TransitionComponent } from './components/transition/transition.component';
import { PostComponent } from './components/post/post.component';
import { FooterComponent } from './components/footer/footer.component';
import { NewscontentComponent } from './components/newscontent/newscontent.component';

// 上百个组件 会导致页面加载比较慢，所以要模块化
// 引入自定义模块
import { UserModule } from './module/user/user.module';

import { ProductModule } from './module/product/product.module';

// @NgModule 装饰器，接收一个元数据对象，告诉 Angular 如何编译和启动应用
@NgModule({
  declarations: [ // 配置当前项目运行的组件
    AppComponent, NewsComponent, HomeComponent, FormComponent, SearchComponent, TodolistComponent, ZujianComponent, NewssComponent, HeaderComponent, TransitionComponent, PostComponent, FooterComponent, NewscontentComponent // 用命令创建后，自动配置了 NewsComponet
  ],
  imports: [  // 配置当前模块运行依赖的其它模块
    BrowserModule,
    AppRoutingModule, //路由模块
    FormsModule, // 上面引入后，下面还需要声明一下才能用
    HttpClientModule,HttpClientJsonpModule, //声明
    UserModule,  //引入自定义模块
    ProductModule
  ],
  providers: [ // 配置项目所需要的服务
    StorageService
  ], 
  bootstrap: [AppComponent] // 指定应用的主视图（成为根组件） 通过引导根 AppModule 来启动应用，这里一般写的是根组件
})
// 根模块不需要导出任何东西，因为其他组件不需要导入根模块
export class AppModule { }
